package contract_request

import (
	"private-go-sdk/http"
	"private-go-sdk/model/common"
)

type ContractViewurlRequest struct {
	// 【是否显示“更多操作”按钮】是否显示“更多操作”按钮 【传参】   取值范围：true（显示“更多操作”按钮），false（隐藏“更多操作”按钮）；默认为：true（显示“更多操作”按钮）
	CanMoreOperation string `json:"canMoreOperation,omitempty"`
	// 【是否展示文件列表】是否展示文件列表 【传参】 取值范围：true（展示文件列表），false（隐藏文件列表）；默认为：true（展示文件列表）
	CanShowDocumentList string `json:"canShowDocumentList,omitempty"`
	// 【登录按钮展示文案】登录按钮展示文案 【作用】 当允许用户登录系统操作文件时，页面中会展示登录按钮，可自定义按钮的文案，例如根据业务系统逻辑定义为“前往签署” 【传参】 不传值默认为：登录。
	LoginCopywriting string `json:"loginCopywriting,omitempty"`
	// 【链接访问次数】链接访问次数 【作用】 1、限制链接访问次数，若超过次数则链接失效 2、若不传值，则访问次数无限制；若传入具体数值，则链接在访问所传具体值次数后失效，无法继续访问 【传参】 最小值：1。单位：次。
	VisitNum *int64 `json:"visitNum,omitempty"`
	// 【是否展示签名验证栏】是否展示签名验证栏 【传参】 取值范围：true（展示签名验证栏），false（隐藏签名验证栏）；不传值默认为：true（展示签名验证栏）。
	CanShowSignatureDetail string `json:"canShowSignatureDetail,omitempty"`
	// 【是否展示返回按钮】是否展示返回按钮 【传参】 取值范围：true（展示返回按钮），false（隐藏返回按钮）；不传值默认为：false（隐藏返回按钮）。
	CanReturn string `json:"canReturn,omitempty"`
	// 【页面语言】页面语言 【作用】 1、用于指定链接页面使用的语言 2、英文和日文页面为付费功能，请确认开通英文版系统和日文版系统后使用 【传参】 取值范围：ZH_CN(中文)，EN_US(英文)，JP(日文)；不传值默认为：ZH_CN（中文）。
	Language string `json:"language,omitempty"`
	// 【链接失效后跳转地址】链接失效后跳转地址 【作用】 当链接页面失效后页面自动跳转至指定地址（如：超过访问次数、链接已超过有效期）
	InvalidToPage string `json:"invalidToPage,omitempty"`
	// 【页面预览类型】页面预览类型 【作用】 控制访问链接时默认跳转的页面 【传参】 取值范围：DETAIL（详情页），CONTENT（电子签约正文）；默认为：DETAIL（详情页）
	PageType string `json:"pageType,omitempty"`
	// 【是否展示线下签署附件上传按钮】是否展示线下签署附件上传按钮 【传参】 取值范围：true（展示线下签署附件上传按钮），false（隐藏线下签署附件上传按钮）；默认为：true（展示线下签署附件上传按钮）
	AllowOffline string `json:"allowOffline,omitempty"`
	// 【是否展示打印按钮】是否展示打印按钮 【传参】 取值范围：true（展示打印按钮），false（隐藏打印按钮）；不传值默认为：false（隐藏打印按钮）。
	AllowPrint string `json:"allowPrint,omitempty"`
	// 【是否展示普通附件上传按钮】是否展示普通附件上传按钮 【传参】 取值范围：true（展示普通附件上传按钮），false（隐藏普通附件上传按钮）；默认为：true（展示普通附件上传按钮）
	AllowAttachment string `json:"allowAttachment,omitempty"`
	ViewUser *common.ContractViewurlViewUserRequest `json:"viewUser,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统文件ID】第三方业务系统文件ID 【作用】 查询需浏览页面的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准
	BizId string `json:"bizId,omitempty"`
	// 【允许用户登录系统操作文件】允许用户登录系统操作文件 【作用】 1、当前接口不会根据操作人查询用户对当前文件的操作权限，如果希望在核验用户身份后，根据用户自身的权限对文件继续进行操作，可以展示登录按钮，让用户登录系统操作文件 2、用户完成登录操作后，将根据登录用户的权限展示文件内容和文件操作，如果用户登录后没有该文件的查看权限，也会出现无权限查看的情况 3、用户点击登录时，如果当前浏览器缓存中存在电子签章系统的生效中的用户登录信息，不需要重复进行登录，直接会以该用户身份刷新文件页面进行后续操作 【传参】 取值范围：true（允许），false（不允许）；不传值默认为：false（不允许）。
	AllowLogin *bool `json:"allowLogin,omitempty"`
	// 【是否展示电子签约正文导航栏】是否展示电子签约正文导航栏 【传参】 取值范围：true（展示电子签约正文导航栏），false（隐藏电子签约正文导航栏）；默认为：true（展示电子签约正文导航栏）
	AllowTab string `json:"allowTab,omitempty"`
	// 【是否展示下载按钮】是否展示下载按钮 【传参】 取值范围：true（展示下载按钮），false（隐藏下载按钮）；默认为：false（隐藏下载按钮）
	AllowDownload string `json:"allowDownload,omitempty"`
	// 【移动端页面导航头部】移动端页面导航头部 【作用】 1、移动端内嵌页面默认带有头部导航区域，且区域内提供返回按钮，嵌入其他app时会与app自带的导航头部区域航重复 2、可通过本参数控制签入移动端页面时是否提供头部导航区域 【传参】 取值范围：true（隐藏导航头部），false（显示导航头部）；不传值默认为：false（显示导航头部）。
	HideHeader string `json:"hideHeader,omitempty"`
	PageStyle *common.ContractViewurlPageStyleRequest `json:"pageStyle,omitempty"`
	// 【是否展示签署详情按钮】是否展示签署详情按钮 【传参】 取值范围：true（展示签署详情按钮），false（隐藏签署详情按钮）；默认为：false（隐藏签署详情按钮）
	CanViewDetail string `json:"canViewDetail,omitempty"`
	// 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时，链接有效期取电子签章管理后台设置的“接口页面默认有效期  3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时，将以后台设置的有效期为准 【传参】 最小值：1。单位：秒。
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// <ext>core:true;format:string</ext> 【电子签约文件ID】电子签约文件ID 【作用】 查询需浏览页面的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准
	ContractId *int64 `json:"contractId,omitempty"`
	// 【是否展示存证报告】是否展示存证报告 【传参】 取值范围：true（展示），false（不展示）；不传值默认为：true（展示）。
	AllowViewEvidence string `json:"allowViewEvidence,omitempty"`
	// <ext>format:string</ext> 【页面默认展示的文档ID】页面默认展示的文档ID 【作用】 电子签约中包含多个签署文档时，可指定页面默认展示的文档 【特殊说明】 仅控制默认展示哪份文档，但是用户仍然可以手动切换查看其他文档
	DocumentId *int64 `json:"documentId,omitempty"`
}
func (obj ContractViewurlRequest) GetUrl() string {
    return "/contract/viewurl"
}

func (obj ContractViewurlRequest) GetHttpParameter() *http.HttpParameter {
    parameter := http.NewGetHttpParameter()
    parameter.AddParam("canMoreOperation", obj.CanMoreOperation)
    parameter.AddParam("canShowDocumentList", obj.CanShowDocumentList)
    parameter.AddParam("loginCopywriting", obj.LoginCopywriting)
    parameter.AddParam("visitNum", obj.VisitNum)
    parameter.AddParam("canShowSignatureDetail", obj.CanShowSignatureDetail)
    parameter.AddParam("canReturn", obj.CanReturn)
    parameter.AddParam("language", obj.Language)
    parameter.AddParam("invalidToPage", obj.InvalidToPage)
    parameter.AddParam("pageType", obj.PageType)
    parameter.AddParam("allowOffline", obj.AllowOffline)
    parameter.AddParam("allowPrint", obj.AllowPrint)
    parameter.AddParam("allowAttachment", obj.AllowAttachment)
    parameter.AddParam("bizId", obj.BizId)
    parameter.AddParam("allowLogin", obj.AllowLogin)
    parameter.AddParam("allowTab", obj.AllowTab)
    parameter.AddParam("allowDownload", obj.AllowDownload)
    parameter.AddParam("hideHeader", obj.HideHeader)
    parameter.AddParam("canViewDetail", obj.CanViewDetail)
    parameter.AddParam("expireTime", obj.ExpireTime)
    parameter.AddParam("contractId", obj.ContractId)
    parameter.AddParam("allowViewEvidence", obj.AllowViewEvidence)
    parameter.AddParam("documentId", obj.DocumentId)
    if obj.ViewUser != nil {
        parameter.AddParam("viewUser.accountNo", obj.ViewUser.AccountNo)
        parameter.AddParam("viewUser.openUserId", obj.ViewUser.OpenUserId)
        parameter.AddParam("viewUser.email", obj.ViewUser.Email)
        parameter.AddParam("viewUser.cardNo", obj.ViewUser.CardNo)
        parameter.AddParam("viewUser.number", obj.ViewUser.Number)
        parameter.AddParam("viewUser.name", obj.ViewUser.Name)
        parameter.AddParam("viewUser.userId", obj.ViewUser.UserId)
        parameter.AddParam("viewUser.contact", obj.ViewUser.Contact)
        parameter.AddParam("viewUser.mobile", obj.ViewUser.Mobile)
    }
    if obj.PageStyle != nil {
        parameter.AddParam("pageStyle.themeColor", obj.PageStyle.ThemeColor)
    }
    return parameter
}
